#ifndef DATA_TYPES_HPP
#define DATA_TYPES_HPP

#include "Types.hpp"
#include "Structures.hpp"
#include "Message.hpp"
	#include "SynchronizedQueue.hpp"

#include <boost/shared_ptr.hpp>
#include <vector>
#include <map>

namespace netspy
{

	typedef boost::shared_ptr<Reply> reply_ptr;
	typedef boost::shared_ptr<Client> client_ptr;
	typedef boost::shared_ptr<Service> service_ptr;
	typedef boost::shared_ptr<Message> message_ptr;

	typedef std::vector<reply_ptr> reply_vec;
	typedef std::vector<client_ptr> client_vec;
	typedef std::vector<service_ptr> service_vec;
	typedef std::vector<message_ptr> message_vev;

	typedef boost::shared_ptr<service_vec> service_vec_ptr;
	typedef	boost::shared_ptr<client_vec> client_vec_ptr;
	
	typedef std::map<std::string,service_vec_ptr> client_service_map;
	typedef boost::shared_ptr<client_service_map> client_service_map_ptr;

	typedef boost::shared_ptr<Message> shared_msg;
	typedef SynchronizedQueue<shared_msg> MessageQueue;
}


#endif
